package org.lim.aiagent.rag.nativeMDRag.transformer;

import jakarta.annotation.Resource;
import org.springframework.ai.document.DocumentTransformer;
import org.springframework.ai.embedding.EmbeddingModel;
import org.springframework.ai.model.transformer.KeywordMetadataEnricher;
import org.springframework.ai.transformer.splitter.TokenTextSplitter;
import org.springframework.ai.vectorstore.SimpleVectorStore;
import org.springframework.ai.vectorstore.VectorStore;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;

@Configuration
public class RagContentTransformer {

    /**
     * 定义一个 TokenTextSplitter Bean 用于文档的精细分割.
     * TokenTextSplitter 是推荐的分割器，因为它根据模型处理文本的方式（Tokens）来分割，
     * 这可以确保分割后的块大小适合模型上下文，并更好地保留语义
     * @return 返回一个配置好的 DocumentTransformer 实例
     */
    @Bean
    public DocumentTransformer tokenTextSplitter() {
        return new TokenTextSplitter(
                // 目标块大小（以 token 计）
                1000,
                // 块之间的重叠大小（以 token 计），用于保持上下文连续性
                50,
                // 一个块的最小字符数，防止产生过小的无意义块
                5,
                // 是否在分割时去除标点符号
                5,
                // 是否在分割时去除空白符
                true
        );
    }
}



